$(function () {
    // 需求1：获取文章分类信息，渲染到页面
    // 因为后面有增删改，完成之后都要重新渲染
    let layer = layui.layer
    initArtCateList()
    function initArtCateList() {
        axios({
            url: '/my/article/cates',
            method: 'get',
        }).then(res => {
            //成功回调
            // console.log(res.data)
            if (res.data.status !== 0) {
                return layer(res.data.message)
            }
            // 渲染
            let arr = []
            // 遍历返回的数据
            res.data.data.forEach(ele => {
                arr.push(`
                    <tr>
                        <td>${ele.Id}</td>
                        <td>${ele.name}</td>
                        <td>${ele.alias}</td>
                        <td>
                            <button data-id= '${ele.Id}' type="button" class="btn-edit layui-btn layui-btn-xs">修改</button>
                            <button data-id= '${ele.Id}' type="button" class="btn-dele layui-btn layui-btn-xs layui-btn-danger">删除</button>
                        </td>
                    </tr>
                `)
            })
            // empty()清除子节点，加快代码效率
            $('tbody').empty().html(arr.join(""))
        })
    }

    // 需求2： 点击按钮，弹出添加类别对话框
    // 定义一个全局变量，接收添加对话框的open()的索引值，用于关闭对话框
    let indexAdd = 0
    $('#addBtn').on('click', function () {
        indexAdd = layer.open({
            type: 1,
            area: ['500px', '260px'],
            title: '添加文章类别',
            content: `
                <form id='addForm' class="layui-form" action="">
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类名称</label>
                        <div class="layui-input-block">
                            <input type="text" name="name" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类别名</label>
                        <div class="layui-input-block">
                            <input type="text" name="alias" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                            <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        </div>
                    </div>
                </form>
            `
        })
    })

    // 需求3：点击按钮：添加文章分类
    $('body').on('submit', "#addForm", function (e) {
        e.preventDefault()
        axios({
            url: '/my/article/addcates',
            method: 'post',
            data: $(this).serialize()
        }).then(res => {
            //成功回调
            // console.log(res)
            // 判断
            if (res.data.status !== 0) {
                // 如果提示成功，但页面渲染无数据，可能是if判定条件写错
                return layer.msg(res.data.message)
            }
            // 成功提示
            layer.msg('添加分类成功啦QAQ')
            // 刷新页面
            initArtCateList()
            // 关闭对话框
            layer.close(indexAdd)
        });
    })

    // 需求4：点击修改按钮
    // 定义一个全局变量，接收修改对话框的open()的索引值，用于关闭对话框
    let indexEdit = 0
    $('tbody').on('click', '.btn-edit', function () {
        indexEdit = layer.open({
            type: 1,
            area: ['500px', '260px'],
            title: '修改文章类别',
            content: `
                <form id='editForm' class="layui-form" action="" lay-filter='editForm'>
                    <!-- 隐藏域，填充Id值，修改数据用 -->
                    <input type="hidden" name="Id">
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类名称</label>
                        <div class="layui-input-block">
                            <input type="text" name="name" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类别名</label>
                        <div class="layui-input-block">
                            <input type="text" name="alias" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                            <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        </div>
                    </div>
                </form>
            `
        })
        // 获取数据和渲染数据 设置自定义属性data-id接收书本的id
        let id = $(this).attr('data-id')
        // ajax请求
        axios({
            // url参数 （路由参数）：/my/article/cates/:id
            // 特点：写于路径后，/不能省略，：一定要去掉，id是动态变化的
            url: `/my/article/cates/${id}`,
            method: 'get',
        }).then(res => {
            //成功回调
            // console.log(res)
            // 判断
            if (res.data.status !== 0) {
                return layer(res.data.message)
            }
            // 成功后渲染数据到表单 layui.form.val()
            layui.form.val('editForm', res.data.data)
        })
    })

    // 需求5：修改文章分类
    // 基于需求3的代码修改
    $('body').on('submit', '#editForm', function (e) {
        e.preventDefault()
        axios({
            url: '/my/article/updatecate',
            method: 'post',
            data: $(this).serialize()
        }).then(res => {
            //成功回调
            // console.log(res)
            // 判断
            if (res.data.status !== 0) {
                // 如果提示成功，但页面渲染无数据，可能是if判定条件写错
                return layer.msg(res.data.message)
            }
            // 成功提示
            layer.msg('修改分类成功啦@_@')
            // 刷新页面
            initArtCateList()
            // 关闭对话框
            layer.close(indexEdit)
        });
    })

    // 需求6：删除
    $('tbody').on('click', '.btn-dele', function () {
        // 获取自定义属性
        let id = $(this).attr('data-id')
        layer.confirm('确认删除吗？', { icon: 3, title: '提示' }, function (index) {
            axios({
                // url参数 （路由参数）：/my/article/cates/:id
                // 特点：写于路径后，/不能省略，：一定要去掉，id是动态变化的
                url: `/my/article/deletecate/${id}`,
                method: 'get',
            }).then(res => {
                //成功回调
                // console.log(res)
                if (res.data.status !== 0) {
                    // 如果提示成功，但页面渲染无数据，可能是if判定条件写错
                    return layer.msg(res.data.message)
                }
                // 成功提示
                layer.msg('删除分类成功啦@_@')
                // 刷新页面
                initArtCateList()
            })
            // 关闭对话框
            layer.close(index)
        })
    })
})